package com.mfz.common.encryption

import com.mfz.common.units.logger
import java.security.MessageDigest
import java.security.NoSuchAlgorithmException
import java.util.*

/**
 *
 * 这个是加密操作的接口设置。
 *
 */
interface Encryption {
	fun getMode(): String
	fun decrypt(cipherText: String): String
	fun encrypt(planText: String): String
}

enum class EncryptionMode {
	RSA,
	SIMPLE,
	OFF
}

/**
 * 这是一个无需要任何的加、解密操作的类。直接返回所传入的参数。
 */
class NotEncryption : Encryption {
	override fun getMode(): String {
		return EncryptionMode.OFF.name
	}

	override fun decrypt(cipherText: String): String {
		return cipherText
	}

	override fun encrypt(planText: String): String {
		return planText
	}
}


/**
 * 简单的进行加密一个明文,此过程返回对应的密码,如出现错误,返回NULL
 *
 * @param plaintext 需要加密的文本
 * @return
 */
fun simpleEncrypt(plaintext: String): String {
	try {
		val en = MessageDigest.getInstance("SHA")
		en.update(plaintext.toByteArray())
		val pass = Base64.getEncoder().encodeToString(en.digest())
		return pass.trim()
	} catch (e: NoSuchAlgorithmException) {
		logger.error("加密出错.", e)
	}

	return ""
}
